#include "head.h"

// 创建无名信号量
sem_t sem;

void * sem_func_1(void * val);


int main(int argc, char const *argv[])
{
    // 创建进程号
    pthread_t tid_1;


    // 初始化 无名信号  用于线程同步
    sem_init( &sem , 0 , 0);
    // 创建进程
    pthread_create( &tid_1 , NULL ,  sem_func_1 , NULL);

    // 模拟主进程工作
    printf("主进程工作.....\n");
    sleep(2);
    printf("主进程工作完成s.....\n");
    // 进程 V操作 通知线程开始工作
    sem_post( &sem );



    // 释放进程
    pthread_join(tid_1 , NULL );




    return 0;
}


void * sem_func_1(void * val)
{
    printf("线程 等待中 ...\n");
    sem_wait(&sem); // 如果是 0  则等待 如果是 > 0 则开始运行 并且 -1
    sem_post(&sem);
    printf("线程 工作中...\n");
    sleep(4);
    return NULL;
}
/*

停车场
    车位 3
    车辆 5 == > 五个线程

要求
    每次只能进入 3 辆车 当三辆车满了后 则后面的车需要等待

思路 
    创建 10 个线程 10 辆车
    创建 3个停车位  == 信号量    sem_init( &sem , 0 , 3);

    要求每辆车挺的时间不同

*/







